-----------------------review------------------------

1.函数
    1.创建
        函数字面量 var say=function(){}
        函数声明 function say(){}
    2.函数调用
        函数名（）
        new 函数名（）
        函数名.call（）
        函数名.apply（）
    3.参数
        形式参数：在函数声明时使用变量写在函数（）内部
        实际参数：在函数调用时写在（）内 

        形式参数和实际参数个数可以不一样类型可以不用一样
    4.内部属性
        arguments：类数组对象 保存实际参数
        
            实际参数——>arguments——>形式参数
            length：个数
            callee：从函数内部指向函数本身
        this：函数赖以生存的环境对象
            兜底对象：html——window
                     vi——global
            什么时候确定：当拥有this的函数被调用时
            this指向谁：指向调用者

    5.作为值和返回值的函数

    6.函数的对象
    say.xxx 
    function say()
    length：
    call:（this，实际参数列表）
    apply;（this，[实际参数列表]）
    prototype:原型对象 每个函数都有
    var arr=[]
    Array.prototype.sort=function(){}
    arr.sort 


2.数组
    a.数组长度可以动态修改
    b.数组中的每一个数组项的数据类型都可以任意

    1.创建
        数组字面量
        构造函数
            var arr = new Array()
            var arr = new Array(5)
            var arr = new Array(5,10)
    2.访问数字元素
        array[index]
            index:数组下标，从0开始
        通过length添删
    4.检查数组
        Array.isArray()
        静态方法
        es6：
            Array.form
            Array.of 
    5.将数组转化成字符串
        toString()
        join()

    6.队栈方法
        栈：
        pop()
        push()
        队列：
        shift()
        unshift()
    7.排序方法
        reverse(): 反转
        sort():排序
            0：默认调用每个值的toString 比较ASCII码
            1：回调函数
                function(a,b){
                    return
                }

    非静态方法
    concat()：数组拼接
             返回值为一个新数组
    slice()：不修改原数组
    数组截取
            0：返回一个数组，并和原数组一样
            1：index 从当前index位置开始截取 截取到数组末尾结束
            2.begin end 从begin开始到end结束，不包含结束位置
            -1代表最后一个数组元素

    splice：数组截取 修改原数组
            0：返回一个空数组
            1：从当前位置开始截取，到数组末尾结束 但是修改原数组
            2：begin number
                从begin开始 截取number个数
            3
            替换：begin number "hello","world"
            插入：begin 0 "hello"
    indexOf：（key，index）
    全等比较
    查找数组元素 从前往后 只找一个元素就返回
    找到返回元素下标
    找不到返回-1
    lastIndexOf：
    查找数组元素 从后往前



3.迭代方法
    非静态方法
    every()：当每一个数组元素满足条件时 返回true
    some()：当有一个数组元素满足条件时 返回true
    map()：返回操作之后的数组
    filter()：过滤 返回一个满足条件的新数组
    forEach()：没有返回值
        参数：回调函数 回调函数中的this值
                回调函数参数：item index arr 数组元素 当前元素的下标 数组名
    reduce()
        参数：回调函数 this值
                回调函数参数：pre item index arr
                            pre:上一次回调函数的返回值或者是初始值（初始值是第二个参数）

                            如果this值没有设定 那么第一次pre为数组的第一个数组项
                            如果this值设定了，第一次pre为初始值，第二次的pre为上一次回调函数的返回值
    作业：myForEach/myEvery/mySome....